package com.ruoyi.system.service;

import java.util.List;
import java.util.Map;

import com.ruoyi.system.domain.SalesOrder;
import com.ruoyi.system.domain.SalesOrderItems;

/**
 * 销售单Service接口
 *
 * @author ruoyi
 */
public interface ISalesOrderService
{
    /**
     * 查询销售单列表
     *
     * @param salesOrder 销售单信息
     * @return 销售单集合
     */
    public List<SalesOrder> selectSalesOrderList(SalesOrder salesOrder);

    /**
     * 查询销售单详细信息
     *
     * @param salesOrderId 销售单ID
     * @return 销售单信息
     */
    public Map<String, Object> selectSalesOrderById(Long salesOrderId);

    /**
     * 新增销售单
     *
     * @param salesOrder 销售单信息
     * @return 结果
     */
    public int insertSalesOrder(SalesOrder salesOrder);

    /**
     * 从报价单创建销售单
     *
     * @param quotationId 报价单ID
     * @return 结果
     */
    public int createFromQuotation(Long quotationId);

    /**
     * 修改销售单
     *
     * @param salesOrder 销售单信息
     * @return 结果
     */
    public int updateSalesOrder(SalesOrder salesOrder);

    /**
     * 删除销售单信息
     *
     * @param salesOrderId 销售单ID
     * @return 结果
     */
    public int deleteSalesOrderById(Long salesOrderId);

    /**
     * 批量删除销售单信息
     *
     * @param salesOrderIds 需要删除的销售单ID
     * @return 结果
     */
    public int deleteSalesOrderByIds(Long[] salesOrderIds);

    /**
     * 处理销售单出库
     *
     * @param salesOrderId 销售单ID
     */

    /**
     * 新增销售单明细
     */
    public int insertSalesOrderItems(SalesOrderItems item);

    /**
     * 批量新增销售单明细
     */
    public int batchInsertSalesOrderItems(List<SalesOrderItems> items);
}
